{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/cql/anaconda3/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n",
      "  from ._conv import register_converters as _register_converters\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import os\n",
    "import gc\n",
    "from gensim.models import Word2Vec\n",
    "import tensorflow as tf\n",
    "import pandas as pd\n",
    "\n",
    "import joblib\n",
    "\n",
    "from sklearn import metrics\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "os.environ['CUDA_VISIBLE_DEVICES'] = '0'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "train = pd.read_csv('data/train.csv', encoding='utf-8')\n",
    "val   = pd.read_csv('data/val.csv',   encoding='utf-8')\n",
    "\n",
    "train['word'].fillna('空', inplace = True)\n",
    "val['word'].fillna('空', inplace = True)\n",
    "\n",
    "data  = pd.concat([train[['word']], val[['word']]], ignore_index=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 训练word2vec"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "add word2vec finished....\n",
      "CPU times: user 802 ms, sys: 210 ms, total: 1.01 s\n",
      "Wall time: 1.01 s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "file_name = './embedding/Word2Vec_word_200.model'\n",
    "if not os.path.exists(file_name):\n",
    "    model = Word2Vec([document.split(' ') for document in data['word'].values],\n",
    "                     size=200, \n",
    "                     window=5,\n",
    "                     iter=20, \n",
    "                     workers=15, \n",
    "                     seed=2020, \n",
    "                     min_count=2)\n",
    "\n",
    "    model.save(file_name)\n",
    "else:\n",
    "    model = Word2Vec.load(file_name)\n",
    "print(\"add word2vec finished....\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 预处理文本"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "MAX_LEN = 60 # 句子的最大长度，覆盖98%\n",
    "MAX_WORDS = 50000 # 总共21万个词，从eda图看，取5万个足够\n",
    "EMDB_SIZE = 200 # 词向量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "tker_model = 'model/tokenizer_word.pkl'\n",
    "if not os.path.exists(tker_model):\n",
    "    tokenizer = tf.keras.preprocessing.text.Tokenizer(num_words=MAX_WORDS, lower=False, filters=\"\")\n",
    "    tokenizer.fit_on_texts(data['word'].tolist()) # 词以空格分割\n",
    "    joblib.dump(tokenizer, tker_model)\n",
    "else:\n",
    "    tokenizer = joblib.load(tker_model)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_ = tokenizer.texts_to_sequences(train['word'].values)\n",
    "train_ = tf.keras.preprocessing.sequence.pad_sequences(train_, maxlen=MAX_LEN)\n",
    "\n",
    "val_ = tokenizer.texts_to_sequences(val['word'].values)\n",
    "val_ = tf.keras.preprocessing.sequence.pad_sequences(val_, maxlen=MAX_LEN)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "word_vocab = tokenizer.word_index # 这个是返回所有的词典\n",
    "\n",
    "num_words = min(MAX_WORDS, len(word_vocab)) + 1\n",
    "count = 0\n",
    "\n",
    "embedding_matrix = np.zeros((num_words, EMDB_SIZE))\n",
    "for word, i in word_vocab.items(): # 从1开始，第一行默认是0\n",
    "    if i < num_words:\n",
    "        embedding_vector = model.wv[word] if word in model else None\n",
    "        if embedding_vector is not None:\n",
    "            count += 1\n",
    "            embedding_matrix[i] = embedding_vector\n",
    "        else:\n",
    "            unk_vec = np.random.random(200) * 0.5\n",
    "            unk_vec = unk_vec - unk_vec.mean()\n",
    "            embedding_matrix[i] = unk_vec"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 搭建RNN网络"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From /home/cql/anaconda3/lib/python3.6/site-packages/tensorflow_core/python/keras/initializers.py:119: calling RandomUniform.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Call initializer instance with the dtype argument instead of passing it to the constructor\n",
      "WARNING:tensorflow:From /home/cql/anaconda3/lib/python3.6/site-packages/tensorflow_core/python/ops/resource_variable_ops.py:1630: calling BaseResourceVariable.__init__ (from tensorflow.python.ops.resource_variable_ops) with constraint is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "If using Keras pass *_constraint arguments to layers.\n",
      "WARNING:tensorflow:From /home/cql/anaconda3/lib/python3.6/site-packages/tensorflow_core/python/ops/init_ops.py:97: calling GlorotUniform.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Call initializer instance with the dtype argument instead of passing it to the constructor\n",
      "WARNING:tensorflow:From /home/cql/anaconda3/lib/python3.6/site-packages/tensorflow_core/python/ops/init_ops.py:97: calling Orthogonal.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Call initializer instance with the dtype argument instead of passing it to the constructor\n",
      "WARNING:tensorflow:From /home/cql/anaconda3/lib/python3.6/site-packages/tensorflow_core/python/ops/init_ops.py:97: calling Zeros.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Call initializer instance with the dtype argument instead of passing it to the constructor\n",
      "Model: \"model\"\n",
      "__________________________________________________________________________________________________\n",
      "Layer (type)                    Output Shape         Param #     Connected to                     \n",
      "==================================================================================================\n",
      "contents (InputLayer)           [(None, 60)]         0                                            \n",
      "__________________________________________________________________________________________________\n",
      "word_embedding (Embedding)      (None, 60, 200)      10000200    contents[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "spatial_dropout1d (SpatialDropo (None, 60, 200)      0           word_embedding[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "bidirectional (Bidirectional)   (None, 60, 400)      481200      spatial_dropout1d[0][0]          \n",
      "__________________________________________________________________________________________________\n",
      "bidirectional_1 (Bidirectional) (None, 60, 400)      721200      bidirectional[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "global_average_pooling1d (Globa (None, 400)          0           bidirectional_1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "global_max_pooling1d (GlobalMax (None, 400)          0           bidirectional_1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "concatenate (Concatenate)       (None, 800)          0           global_average_pooling1d[0][0]   \n",
      "                                                                 global_max_pooling1d[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "dense (Dense)                   (None, 1000)         801000      concatenate[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization (BatchNorma (None, 1000)         4000        dense[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "activation (Activation)         (None, 1000)         0           batch_normalization[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "dropout (Dropout)               (None, 1000)         0           activation[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "dense_1 (Dense)                 (None, 500)          500500      dropout[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_1 (BatchNor (None, 500)          2000        dense_1[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "activation_1 (Activation)       (None, 500)          0           batch_normalization_1[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "dense_2 (Dense)                 (None, 26)           13026       activation_1[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "tf_op_layer_Softmax (TensorFlow [(None, 26)]         0           dense_2[0][0]                    \n",
      "==================================================================================================\n",
      "Total params: 12,523,126\n",
      "Trainable params: 2,519,926\n",
      "Non-trainable params: 10,003,200\n",
      "__________________________________________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "content = tf.keras.layers.Input(shape=(MAX_LEN), dtype='int32', name='contents')\n",
    "embedding = tf.keras.layers.Embedding(\n",
    "    name=\"word_embedding\",\n",
    "    input_dim=embedding_matrix.shape[0], # 词典大小\n",
    "    weights=[embedding_matrix],          # 可以初始化，也可以用w2v等\n",
    "    output_dim=embedding_matrix.shape[1], # 词向量维度\n",
    "    trainable=False)\n",
    "\n",
    "x = tf.keras.layers.SpatialDropout1D(0.2)(embedding(content))\n",
    "\n",
    "#编码层\n",
    "#bi-GRU\n",
    "#bi-GRU\n",
    "#Bidirectional可以设置双向的是concat还是add\n",
    "x = tf.keras.layers.Bidirectional(tf.keras.layers.GRU(200, return_sequences=True))(x)  # 400维\n",
    "x = tf.keras.layers.Bidirectional(tf.keras.layers.GRU(200, return_sequences=True))(x)  # 400维\n",
    "\n",
    "#池化层\n",
    "avg_pool = tf.keras.layers.GlobalAveragePooling1D()(x) #（batch,400）即每个维度的数据取平均值\n",
    "max_pool = tf.keras.layers.GlobalMaxPooling1D()(x) # (batch,400) 即每个维度的数据取最大值\n",
    "\n",
    "conc = tf.keras.layers.concatenate([avg_pool, max_pool])\n",
    "\n",
    "x = tf.keras.layers.Dense(1000)(conc)\n",
    "x = tf.keras.layers.BatchNormalization()(x)\n",
    "x = tf.keras.layers.Activation(activation=\"relu\")(x)\n",
    "x = tf.keras.layers.Dropout(0.2)(x)\n",
    "x = tf.keras.layers.Dense(500)(x)\n",
    "x = tf.keras.layers.BatchNormalization()(x)\n",
    "x = tf.keras.layers.Activation(activation=\"relu\")(x)\n",
    "x = tf.keras.layers.Dense(26)(x) # 26类\n",
    "output = tf.nn.softmax(x)\n",
    "\n",
    "model_rnn = tf.keras.models.Model(inputs=content, outputs=output)\n",
    "\n",
    "model_rnn.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "learning_rate = 0.001\n",
    "optimizer = tf.keras.optimizers.Adam(learning_rate=learning_rate)\n",
    "model_rnn.compile(loss='sparse_categorical_crossentropy', optimizer=optimizer, metrics=['acc'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From /home/cql/anaconda3/lib/python3.6/site-packages/tensorflow_core/python/ops/math_grad.py:1424: where (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Use tf.where in 2.0, which has the same broadcast rule as np.where\n",
      "Train on 164151 samples, validate on 29776 samples\n",
      "Epoch 1/50\n",
      "  1024/164151 [..............................] - ETA: 19:41 - loss: 2.9559 - acc: 0.2275WARNING:tensorflow:Method (on_train_batch_end) is slow compared to the batch update (0.392398). Check your callbacks.\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 1.0446 - acc: 0.6751\n",
      "Epoch 00001: val_acc improved from -inf to 0.72968, saving model to model/rnn_ori.hdf5\n",
      "164151/164151 [==============================] - 253s 2ms/sample - loss: 1.0441 - acc: 0.6753 - val_loss: 0.8930 - val_acc: 0.7297\n",
      "Epoch 2/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.8792 - acc: 0.7230\n",
      "Epoch 00002: val_acc improved from 0.72968 to 0.74184, saving model to model/rnn_ori.hdf5\n",
      "164151/164151 [==============================] - 223s 1ms/sample - loss: 0.8792 - acc: 0.7230 - val_loss: 0.8493 - val_acc: 0.7418\n",
      "Epoch 3/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.8214 - acc: 0.7400\n",
      "Epoch 00003: val_acc improved from 0.74184 to 0.75343, saving model to model/rnn_ori.hdf5\n",
      "164151/164151 [==============================] - 222s 1ms/sample - loss: 0.8215 - acc: 0.7400 - val_loss: 0.8134 - val_acc: 0.7534\n",
      "Epoch 4/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.7830 - acc: 0.7524\n",
      "Epoch 00004: val_acc improved from 0.75343 to 0.75991, saving model to model/rnn_ori.hdf5\n",
      "164151/164151 [==============================] - 220s 1ms/sample - loss: 0.7830 - acc: 0.7524 - val_loss: 0.7947 - val_acc: 0.7599\n",
      "Epoch 5/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.7486 - acc: 0.7616\n",
      "Epoch 00005: val_acc did not improve from 0.75991\n",
      "164151/164151 [==============================] - 220s 1ms/sample - loss: 0.7486 - acc: 0.7616 - val_loss: 0.8174 - val_acc: 0.7518\n",
      "Epoch 6/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.7154 - acc: 0.7718\n",
      "Epoch 00006: val_acc did not improve from 0.75991\n",
      "164151/164151 [==============================] - 226s 1ms/sample - loss: 0.7155 - acc: 0.7718 - val_loss: 0.8128 - val_acc: 0.7502\n",
      "Epoch 7/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.6870 - acc: 0.7798\n",
      "Epoch 00007: val_acc did not improve from 0.75991\n",
      "164151/164151 [==============================] - 225s 1ms/sample - loss: 0.6873 - acc: 0.7797 - val_loss: 0.8313 - val_acc: 0.7510\n",
      "Epoch 8/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.6550 - acc: 0.7892\n",
      "Epoch 00008: ReduceLROnPlateau reducing learning rate to 0.0005000000237487257.\n",
      "\n",
      "Epoch 00008: val_acc did not improve from 0.75991\n",
      "164151/164151 [==============================] - 227s 1ms/sample - loss: 0.6551 - acc: 0.7892 - val_loss: 0.8504 - val_acc: 0.7434\n",
      "Epoch 9/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.5765 - acc: 0.8124\n",
      "Epoch 00009: val_acc did not improve from 0.75991\n",
      "164151/164151 [==============================] - 226s 1ms/sample - loss: 0.5766 - acc: 0.8124 - val_loss: 0.8452 - val_acc: 0.7496\n",
      "Epoch 10/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.5373 - acc: 0.8237\n",
      "Epoch 00010: val_acc did not improve from 0.75991\n",
      "164151/164151 [==============================] - 223s 1ms/sample - loss: 0.5372 - acc: 0.8238 - val_loss: 0.8546 - val_acc: 0.7520\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<tensorflow.python.keras.callbacks.History at 0x7f9ac5151a90>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "early_stopping = tf.keras.callbacks.EarlyStopping(monitor='val_acc', patience=6)\n",
    "plateau = tf.keras.callbacks.ReduceLROnPlateau(monitor=\"val_acc\", verbose=1, mode='max', factor=0.5, patience=4)\n",
    "checkpoint = tf.keras.callbacks.ModelCheckpoint('model/rnn_ori.hdf5', monitor='val_acc', \\\n",
    "                                                verbose=2, save_best_only=True, mode='max')\n",
    "tbcallback = tf.keras.callbacks.TensorBoard(log_dir='log/rnn', histogram_freq=1, write_grads=True)\n",
    "\n",
    "model_rnn.fit(train_, train['class'], validation_data=(val_, val['class']), \\\n",
    "          epochs=50, batch_size=512, callbacks=[early_stopping, plateau, checkpoint, tbcallback])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "del model_rnn\n",
    "gc.collect()\n",
    "tf.keras.backend.clear_session()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 调优，改成LSTM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From /home/cql/anaconda3/lib/python3.6/site-packages/tensorflow_core/python/keras/initializers.py:119: calling RandomUniform.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Call initializer instance with the dtype argument instead of passing it to the constructor\n",
      "WARNING:tensorflow:From /home/cql/anaconda3/lib/python3.6/site-packages/tensorflow_core/python/ops/resource_variable_ops.py:1630: calling BaseResourceVariable.__init__ (from tensorflow.python.ops.resource_variable_ops) with constraint is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "If using Keras pass *_constraint arguments to layers.\n",
      "WARNING:tensorflow:From /home/cql/anaconda3/lib/python3.6/site-packages/tensorflow_core/python/ops/init_ops.py:97: calling GlorotUniform.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Call initializer instance with the dtype argument instead of passing it to the constructor\n",
      "WARNING:tensorflow:From /home/cql/anaconda3/lib/python3.6/site-packages/tensorflow_core/python/ops/init_ops.py:97: calling Orthogonal.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Call initializer instance with the dtype argument instead of passing it to the constructor\n",
      "WARNING:tensorflow:From /home/cql/anaconda3/lib/python3.6/site-packages/tensorflow_core/python/ops/init_ops.py:97: calling Zeros.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Call initializer instance with the dtype argument instead of passing it to the constructor\n"
     ]
    }
   ],
   "source": [
    "content = tf.keras.layers.Input(shape=(MAX_LEN), dtype='int32', name='contents')\n",
    "embedding = tf.keras.layers.Embedding(\n",
    "    name=\"word_embedding\",\n",
    "    input_dim=embedding_matrix.shape[0], # 词典大小\n",
    "    weights=[embedding_matrix],          # 可以初始化，也可以用w2v等\n",
    "    output_dim=embedding_matrix.shape[1], # 词向量维度\n",
    "    trainable=False)\n",
    "\n",
    "x = tf.keras.layers.SpatialDropout1D(0.2)(embedding(content))\n",
    "\n",
    "#编码层\n",
    "#bi-GRU\n",
    "#bi-GRU\n",
    "#Bidirectional可以设置双向的是concat还是add\n",
    "x = tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(200, return_sequences=True))(x)  # 400维\n",
    "x = tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(200, return_sequences=True))(x)  # 400维\n",
    "\n",
    "#池化层\n",
    "avg_pool = tf.keras.layers.GlobalAveragePooling1D()(x) #（batch,400）即每个维度的数据取平均值\n",
    "max_pool = tf.keras.layers.GlobalMaxPooling1D()(x) # (batch,400) 即每个维度的数据取最大值\n",
    "\n",
    "conc = tf.keras.layers.concatenate([avg_pool, max_pool])\n",
    "\n",
    "x = tf.keras.layers.Dense(1000)(conc)\n",
    "x = tf.keras.layers.BatchNormalization()(x)\n",
    "x = tf.keras.layers.Activation(activation=\"relu\")(x)\n",
    "x = tf.keras.layers.Dropout(0.2)(x)\n",
    "x = tf.keras.layers.Dense(500)(x)\n",
    "x = tf.keras.layers.BatchNormalization()(x)\n",
    "x = tf.keras.layers.Activation(activation=\"relu\")(x)\n",
    "x = tf.keras.layers.Dense(26)(x) # 26类\n",
    "output = tf.nn.softmax(x)\n",
    "\n",
    "model_rnn_lstm = tf.keras.models.Model(inputs=content, outputs=output)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "learning_rate = 0.001\n",
    "optimizer = tf.keras.optimizers.Adam(learning_rate=learning_rate)\n",
    "model_rnn_lstm.compile(loss='sparse_categorical_crossentropy', optimizer=optimizer, metrics=['acc'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From /home/cql/anaconda3/lib/python3.6/site-packages/tensorflow_core/python/ops/math_grad.py:1424: where (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Use tf.where in 2.0, which has the same broadcast rule as np.where\n",
      "Train on 164151 samples, validate on 29776 samples\n",
      "Epoch 1/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 1.0504 - acc: 0.6735\n",
      "Epoch 00001: val_acc improved from -inf to 0.72945, saving model to model/rnn_lstm.hdf5\n",
      "164151/164151 [==============================] - 270s 2ms/sample - loss: 1.0502 - acc: 0.6736 - val_loss: 0.8981 - val_acc: 0.7294\n",
      "Epoch 2/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.8839 - acc: 0.7214\n",
      "Epoch 00002: val_acc improved from 0.72945 to 0.74402, saving model to model/rnn_lstm.hdf5\n",
      "164151/164151 [==============================] - 244s 1ms/sample - loss: 0.8839 - acc: 0.7213 - val_loss: 0.8259 - val_acc: 0.7440\n",
      "Epoch 3/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.8247 - acc: 0.7392\n",
      "Epoch 00003: val_acc improved from 0.74402 to 0.75144, saving model to model/rnn_lstm.hdf5\n",
      "164151/164151 [==============================] - 244s 1ms/sample - loss: 0.8246 - acc: 0.7392 - val_loss: 0.8133 - val_acc: 0.7514\n",
      "Epoch 4/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.7826 - acc: 0.7519\n",
      "Epoch 00004: val_acc improved from 0.75144 to 0.75168, saving model to model/rnn_lstm.hdf5\n",
      "164151/164151 [==============================] - 244s 1ms/sample - loss: 0.7826 - acc: 0.7519 - val_loss: 0.8077 - val_acc: 0.7517\n",
      "Epoch 5/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.7461 - acc: 0.7630\n",
      "Epoch 00005: val_acc improved from 0.75168 to 0.75662, saving model to model/rnn_lstm.hdf5\n",
      "164151/164151 [==============================] - 245s 1ms/sample - loss: 0.7461 - acc: 0.7630 - val_loss: 0.7976 - val_acc: 0.7566\n",
      "Epoch 6/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.7125 - acc: 0.7726\n",
      "Epoch 00006: val_acc improved from 0.75662 to 0.76229, saving model to model/rnn_lstm.hdf5\n",
      "164151/164151 [==============================] - 244s 1ms/sample - loss: 0.7125 - acc: 0.7725 - val_loss: 0.8003 - val_acc: 0.7623\n",
      "Epoch 7/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.6774 - acc: 0.7822\n",
      "Epoch 00007: val_acc did not improve from 0.76229\n",
      "164151/164151 [==============================] - 246s 1ms/sample - loss: 0.6775 - acc: 0.7821 - val_loss: 0.8097 - val_acc: 0.7564\n",
      "Epoch 8/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.6446 - acc: 0.7914\n",
      "Epoch 00008: val_acc did not improve from 0.76229\n",
      "164151/164151 [==============================] - 244s 1ms/sample - loss: 0.6447 - acc: 0.7914 - val_loss: 0.8263 - val_acc: 0.7557\n",
      "Epoch 9/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.6111 - acc: 0.8007\n",
      "Epoch 00009: val_acc did not improve from 0.76229\n",
      "164151/164151 [==============================] - 244s 1ms/sample - loss: 0.6109 - acc: 0.8008 - val_loss: 0.8452 - val_acc: 0.7484\n",
      "Epoch 10/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.5749 - acc: 0.8118\n",
      "Epoch 00010: ReduceLROnPlateau reducing learning rate to 0.0005000000237487257.\n",
      "\n",
      "Epoch 00010: val_acc did not improve from 0.76229\n",
      "164151/164151 [==============================] - 246s 1ms/sample - loss: 0.5750 - acc: 0.8118 - val_loss: 0.8708 - val_acc: 0.7467\n",
      "Epoch 11/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.4821 - acc: 0.8402\n",
      "Epoch 00011: val_acc did not improve from 0.76229\n",
      "164151/164151 [==============================] - 245s 1ms/sample - loss: 0.4820 - acc: 0.8402 - val_loss: 0.9078 - val_acc: 0.7453\n",
      "Epoch 12/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.4370 - acc: 0.8543\n",
      "Epoch 00012: val_acc did not improve from 0.76229\n",
      "164151/164151 [==============================] - 246s 1ms/sample - loss: 0.4372 - acc: 0.8543 - val_loss: 0.9367 - val_acc: 0.7440\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<tensorflow.python.keras.callbacks.History at 0x7f786af435f8>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "early_stopping = tf.keras.callbacks.EarlyStopping(monitor='val_acc', patience=6)\n",
    "plateau = tf.keras.callbacks.ReduceLROnPlateau(monitor=\"val_acc\", verbose=1, mode='max', factor=0.5, patience=4)\n",
    "checkpoint = tf.keras.callbacks.ModelCheckpoint('model/rnn_lstm.hdf5', monitor='val_acc', \\\n",
    "                                                verbose=2, save_best_only=True, mode='max')\n",
    "tbcallback = tf.keras.callbacks.TensorBoard(log_dir='log/rnn_lstm', histogram_freq=1, write_grads=True)\n",
    "\n",
    "model_rnn_lstm.fit(train_, train['class'], validation_data=(val_, val['class']), \\\n",
    "          epochs=50, batch_size=512, callbacks=[early_stopping, plateau, checkpoint, tbcallback])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 1min 40s, sys: 351 ms, total: 1min 40s\n",
      "Wall time: 1min 39s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "model_rnn_lstm.load_weights(\"model/rnn_lstm.hdf5\")\n",
    "preds_val = model_rnn_lstm.predict(val_)\n",
    "preds_val = np.argmax(preds_val, axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.7622917786136486\n",
      "0.6634305253572261\n",
      "0.6494224328196425\n",
      "0.6517754036237755\n"
     ]
    }
   ],
   "source": [
    "print(metrics.accuracy_score(val['class'], preds_val))\n",
    "print(metrics.precision_score(val['class'], preds_val, average='macro'))\n",
    "print(metrics.recall_score(val['class'], preds_val, average='macro'))\n",
    "print(metrics.f1_score(val['class'], preds_val, average='macro'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 测试集\n",
    "test   = pd.read_csv('data/test.csv',   encoding='utf-8')\n",
    "test_ = tokenizer.texts_to_sequences(test['word'].values)\n",
    "test_ = tf.keras.preprocessing.sequence.pad_sequences(test_, maxlen=MAX_LEN)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 2min 49s, sys: 247 ms, total: 2min 50s\n",
      "Wall time: 2min 48s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "preds_test = model_rnn_lstm.predict(test_)\n",
    "preds_test = np.argmax(preds_test, axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.7416176296354804\n",
      "0.626908007858877\n",
      "0.6306671051546687\n",
      "0.6204964145950382\n"
     ]
    }
   ],
   "source": [
    "print(metrics.accuracy_score(test['class'], preds_test))\n",
    "print(metrics.precision_score(test['class'], preds_test, average='macro'))\n",
    "print(metrics.recall_score(test['class'], preds_test, average='macro'))\n",
    "print(metrics.f1_score(test['class'], preds_test, average='macro'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import LabelEncoder\n",
    "le = joblib.load('model/class_le.pkl')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.57      0.57      0.57       385\n",
      "           1       0.68      0.55      0.61       546\n",
      "           2       0.64      0.73      0.68       195\n",
      "           3       0.71      0.65      0.68       917\n",
      "           4       0.65      0.50      0.57       154\n",
      "           5       0.44      0.49      0.46       505\n",
      "           6       0.59      0.49      0.53       588\n",
      "           7       0.64      0.70      0.67       371\n",
      "           8       0.76      0.79      0.78       661\n",
      "           9       0.45      0.29      0.35       291\n",
      "          10       0.88      0.93      0.90       656\n",
      "          11       0.57      0.68      0.62      1949\n",
      "          12       0.95      0.89      0.92       228\n",
      "          13       0.95      0.98      0.96     10370\n",
      "          14       0.74      0.60      0.66      2884\n",
      "          15       0.62      0.75      0.68      2719\n",
      "          16       0.49      0.50      0.49       133\n",
      "          17       0.53      0.66      0.59       363\n",
      "          18       0.87      0.97      0.91       610\n",
      "          19       0.73      0.78      0.75       682\n",
      "          20       0.71      0.49      0.58       417\n",
      "          21       0.64      0.74      0.69       521\n",
      "          22       0.52      0.38      0.44      1128\n",
      "          23       0.75      0.74      0.75      1112\n",
      "          24       0.57      0.45      0.50      1166\n",
      "          25       0.60      0.60      0.60       225\n",
      "\n",
      "    accuracy                           0.76     29776\n",
      "   macro avg       0.66      0.65      0.65     29776\n",
      "weighted avg       0.76      0.76      0.76     29776\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(metrics.classification_report(val['class'], preds_val))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "for x in le.classes_:\n",
    "    print(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(159,0.5,'true')"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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tTm3zXzhhTeJmr3QlfJz+3rcx7S64TqqVq3Mr1viGPbKO3w1egKfjxpBQvwCjh07zgMPPulKltKlS9Gu7Q306/fsCcszr0nhzekdNWpUY8rkL4DMU18mTJjGnLk/FNsctuy/NmXxOoevffjZQY9RsmRJZkdNACAmZgX9HxvsWia11xMVhT7fbbbUiS1txKYsymFvFlv2X5uy2JJDfVoRVUQvVOmlc/I2o1I82HLPHDVUEREREZGCO+dvMxr5kre3Gb17WJGrX9dOuxAREREREREpNjSDosD8dZFMEREREREREZEzpgEKEREREREREfGcTvEQERERERERKWyOTvEoKM2gEBERERERERHPaQaFiIiIiIiISGHTRTILTDMoRERERERERMRzmkEhBWbLzXQ9valwLiWDgr2OkOPvtONeRxARKTT6vBERESleNEAhIiIiIiIiUtgcDXEXlE7xEBERERERERHPaQaFiIiIiIiISGHTRTILTDMoRERERERERMRzGqAQEREREREREc/pFA8RERERERGRwqZTPApMMyhERERERERExHOaQSEiIiIiIiJS2BzNoCioc3YGRYf2rUlcs5iktUsZNLB/sc9Rr97FxMXOzXkc2JfEgMcfcjVDQEAAscvnMG3qGAD69e3DurVLOX4shSpVKrmSYdTIEexMXklC/IKcZZUqVWT2rEjWJS5l9qxIKlasUOjlhobWYlZUJL+smE9s3Fz69bv/hPVPPPEwh//6NaceWrZsxs7UVSyLnsWy6FkMHjKg0DMBhIWFMH/uZFav+oGVCQt5/LEHARj28kBW/DKPuNi5RH0/nlq1avil/Gy+tsv4bz7Jaa+bNkQTFzvXrxnys2lDNPEr5hMXO5foZbM8yQDwxICHWZmwkIT4BXw97mNKlizpSQ6v+rT82upbbwxlzeofWfHLPKZM/pwKFc5zLVM2L/t5X/sOQP9+95O4ZjErExby5hvPu5oJvNtv8n7W7c/6rKtUqSJRsyJZm7iUKD/186eS33byQoUK5zFxwkjWrP6R1at+oFnTRq5nyG9/9oItx2nwf8dJ07OOk7xgU1u1Zdt4WSe+yr7mmitYuvg74lfMZ9rU0ZQvX87VTDbtv1I4jDFPGWMSjTFrjDGRxphSxpgLjTExxpiNxpiJxpgSWa8tmfXzpqz1dXK9z5Cs5euNMR3OOo/jOP/8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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f798b479ba8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#得到混淆矩阵\n",
    "cm = metrics.confusion_matrix(val['class'], preds_val)\n",
    "\n",
    "plt.subplots(figsize=(20,12))\n",
    "ax = sns.heatmap(pd.DataFrame(cm), annot=True, fmt='.20g')\n",
    "ax.set_title('confusion matrix') #标题\n",
    "ax.set_xlabel('predict') #x轴\n",
    "ax.set_ylabel('true') #y轴"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "5被分到3跟15；9被分到11跟15；16被分到15跟17；22被分到14跟15\n",
    "所以5/9/16/22权重提高，15降低"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 调整类别权重"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "class_weight = {}\n",
    "for i in range(26):\n",
    "    class_weight[i] = 1\n",
    "class_weight[5] = 1.5\n",
    "class_weight[9] = 1.5\n",
    "class_weight[16] = 1.5\n",
    "class_weight[22] = 1.5\n",
    "class_weight[15] = 0.7"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From /home/cql/anaconda3/lib/python3.6/site-packages/tensorflow_core/python/keras/initializers.py:119: calling RandomUniform.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Call initializer instance with the dtype argument instead of passing it to the constructor\n",
      "WARNING:tensorflow:From /home/cql/anaconda3/lib/python3.6/site-packages/tensorflow_core/python/ops/resource_variable_ops.py:1630: calling BaseResourceVariable.__init__ (from tensorflow.python.ops.resource_variable_ops) with constraint is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "If using Keras pass *_constraint arguments to layers.\n",
      "WARNING:tensorflow:From /home/cql/anaconda3/lib/python3.6/site-packages/tensorflow_core/python/ops/init_ops.py:97: calling GlorotUniform.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Call initializer instance with the dtype argument instead of passing it to the constructor\n",
      "WARNING:tensorflow:From /home/cql/anaconda3/lib/python3.6/site-packages/tensorflow_core/python/ops/init_ops.py:97: calling Orthogonal.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Call initializer instance with the dtype argument instead of passing it to the constructor\n",
      "WARNING:tensorflow:From /home/cql/anaconda3/lib/python3.6/site-packages/tensorflow_core/python/ops/init_ops.py:97: calling Zeros.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Call initializer instance with the dtype argument instead of passing it to the constructor\n"
     ]
    }
   ],
   "source": [
    "content = tf.keras.layers.Input(shape=(MAX_LEN), dtype='int32', name='contents')\n",
    "embedding = tf.keras.layers.Embedding(\n",
    "    name=\"word_embedding\",\n",
    "    input_dim=embedding_matrix.shape[0], # 词典大小\n",
    "    weights=[embedding_matrix],          # 可以初始化，也可以用w2v等\n",
    "    output_dim=embedding_matrix.shape[1], # 词向量维度\n",
    "    trainable=False)\n",
    "\n",
    "x = tf.keras.layers.SpatialDropout1D(0.2)(embedding(content))\n",
    "\n",
    "#编码层\n",
    "#bi-GRU\n",
    "#bi-GRU\n",
    "#Bidirectional可以设置双向的是concat还是add\n",
    "x = tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(200, return_sequences=True))(x)  # 400维\n",
    "x = tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(200, return_sequences=True))(x)  # 400维\n",
    "\n",
    "#池化层\n",
    "avg_pool = tf.keras.layers.GlobalAveragePooling1D()(x) #（batch,400）即每个维度的数据取平均值\n",
    "max_pool = tf.keras.layers.GlobalMaxPooling1D()(x) # (batch,400) 即每个维度的数据取最大值\n",
    "\n",
    "conc = tf.keras.layers.concatenate([avg_pool, max_pool])\n",
    "\n",
    "x = tf.keras.layers.Dense(1000)(conc)\n",
    "x = tf.keras.layers.BatchNormalization()(x)\n",
    "x = tf.keras.layers.Activation(activation=\"relu\")(x)\n",
    "x = tf.keras.layers.Dropout(0.2)(x)\n",
    "x = tf.keras.layers.Dense(500)(x)\n",
    "x = tf.keras.layers.BatchNormalization()(x)\n",
    "x = tf.keras.layers.Activation(activation=\"relu\")(x)\n",
    "x = tf.keras.layers.Dense(26)(x) # 26类\n",
    "output = tf.nn.softmax(x)\n",
    "\n",
    "model_rnn_lstm_balance = tf.keras.models.Model(inputs=content, outputs=output)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "learning_rate = 0.001\n",
    "optimizer = tf.keras.optimizers.Adam(learning_rate=learning_rate)\n",
    "model_rnn_lstm_balance.compile(loss='sparse_categorical_crossentropy', optimizer=optimizer, metrics=['acc'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From /home/cql/anaconda3/lib/python3.6/site-packages/tensorflow_core/python/ops/math_grad.py:1424: where (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Use tf.where in 2.0, which has the same broadcast rule as np.where\n",
      "Train on 164151 samples, validate on 29776 samples\n",
      "Epoch 1/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 1.0830 - acc: 0.6690\n",
      "Epoch 00001: val_acc improved from -inf to 0.71658, saving model to model/rnn_lstm_balance.hdf5\n",
      "164151/164151 [==============================] - 167s 1ms/sample - loss: 1.0826 - acc: 0.6691 - val_loss: 0.9165 - val_acc: 0.7166\n",
      "Epoch 2/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.9161 - acc: 0.7175\n",
      "Epoch 00002: val_acc improved from 0.71658 to 0.74228, saving model to model/rnn_lstm_balance.hdf5\n",
      "164151/164151 [==============================] - 248s 2ms/sample - loss: 0.9162 - acc: 0.7175 - val_loss: 0.8310 - val_acc: 0.7423\n",
      "Epoch 3/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.8552 - acc: 0.7345\n",
      "Epoch 00003: val_acc improved from 0.74228 to 0.75034, saving model to model/rnn_lstm_balance.hdf5\n",
      "164151/164151 [==============================] - 238s 1ms/sample - loss: 0.8553 - acc: 0.7344 - val_loss: 0.8100 - val_acc: 0.7503\n",
      "Epoch 4/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.8095 - acc: 0.7492\n",
      "Epoch 00004: val_acc improved from 0.75034 to 0.75107, saving model to model/rnn_lstm_balance.hdf5\n",
      "164151/164151 [==============================] - 239s 1ms/sample - loss: 0.8096 - acc: 0.7491 - val_loss: 0.8084 - val_acc: 0.7511\n",
      "Epoch 5/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.7719 - acc: 0.7597\n",
      "Epoch 00005: val_acc did not improve from 0.75107\n",
      "164151/164151 [==============================] - 237s 1ms/sample - loss: 0.7719 - acc: 0.7596 - val_loss: 0.8197 - val_acc: 0.7479\n",
      "Epoch 6/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.7366 - acc: 0.7693\n",
      "Epoch 00006: val_acc did not improve from 0.75107\n",
      "164151/164151 [==============================] - 236s 1ms/sample - loss: 0.7366 - acc: 0.7693 - val_loss: 0.8390 - val_acc: 0.7444\n",
      "Epoch 7/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.7037 - acc: 0.7779\n",
      "Epoch 00007: val_acc improved from 0.75107 to 0.75450, saving model to model/rnn_lstm_balance.hdf5\n",
      "164151/164151 [==============================] - 235s 1ms/sample - loss: 0.7037 - acc: 0.7779 - val_loss: 0.8112 - val_acc: 0.7545\n",
      "Epoch 8/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.6652 - acc: 0.7883\n",
      "Epoch 00008: val_acc did not improve from 0.75450\n",
      "164151/164151 [==============================] - 238s 1ms/sample - loss: 0.6652 - acc: 0.7882 - val_loss: 0.8336 - val_acc: 0.7469\n",
      "Epoch 9/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.6303 - acc: 0.7975\n",
      "Epoch 00009: val_acc did not improve from 0.75450\n",
      "164151/164151 [==============================] - 237s 1ms/sample - loss: 0.6305 - acc: 0.7975 - val_loss: 0.8545 - val_acc: 0.7474\n",
      "Epoch 10/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.5921 - acc: 0.8077\n",
      "Epoch 00010: val_acc did not improve from 0.75450\n",
      "164151/164151 [==============================] - 240s 1ms/sample - loss: 0.5922 - acc: 0.8076 - val_loss: 0.8614 - val_acc: 0.7470\n",
      "Epoch 11/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.5556 - acc: 0.8173\n",
      "Epoch 00011: ReduceLROnPlateau reducing learning rate to 0.0005000000237487257.\n",
      "\n",
      "Epoch 00011: val_acc did not improve from 0.75450\n",
      "164151/164151 [==============================] - 241s 1ms/sample - loss: 0.5557 - acc: 0.8172 - val_loss: 0.8954 - val_acc: 0.7371\n",
      "Epoch 12/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.4593 - acc: 0.8472\n",
      "Epoch 00012: val_acc did not improve from 0.75450\n",
      "164151/164151 [==============================] - 238s 1ms/sample - loss: 0.4593 - acc: 0.8472 - val_loss: 0.9353 - val_acc: 0.7442\n",
      "Epoch 13/50\n",
      "163840/164151 [============================>.] - ETA: 0s - loss: 0.4147 - acc: 0.8603\n",
      "Epoch 00013: val_acc did not improve from 0.75450\n",
      "164151/164151 [==============================] - 238s 1ms/sample - loss: 0.4148 - acc: 0.8602 - val_loss: 0.9745 - val_acc: 0.7413\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<tensorflow.python.keras.callbacks.History at 0x7f63a6d194a8>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "early_stopping = tf.keras.callbacks.EarlyStopping(monitor='val_acc', patience=6)\n",
    "plateau = tf.keras.callbacks.ReduceLROnPlateau(monitor=\"val_acc\", verbose=1, mode='max', factor=0.5, patience=4)\n",
    "checkpoint = tf.keras.callbacks.ModelCheckpoint('model/rnn_lstm_balance.hdf5', monitor='val_acc', \\\n",
    "                                                verbose=2, save_best_only=True, mode='max')\n",
    "tbcallback = tf.keras.callbacks.TensorBoard(log_dir='log/rnn_lstm_balance', histogram_freq=1, write_grads=True)\n",
    "\n",
    "model_rnn_lstm_balance.fit(train_, train['class'], validation_data=(val_, val['class']), class_weight=class_weight, \\\n",
    "          epochs=50, batch_size=512, callbacks=[early_stopping, plateau, checkpoint, tbcallback])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "效果差了点，其实也不用处理不平衡，因为分类情况后续每个月都会变，每个月都需要重新训练，所以不用特意过拟合当前的数据"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
